4

简介

学习 Node.js前,我们需要弄懂 什么是 npm, npm 是一个命令工具, 能够连接互联网共享模块仓库。能登录并发布自己的模块。同时它能够从互联网下下载想要的模块, 也能执行内置脚本, 启动项目,测试代码等操作。

CLI 命令

npm init

初始化npm项目

  • npm init -f 已存在package.json, 强制初始化
  • npm init -y 直接初始化, 跳过交互输入

npm ls

根据 package.json 查询模块状态

  • npm ls --dev 只展示 devDependencies
  • npm ls --productioin只展示 dependencies
  • npm ls --parseable 目录形式展示

npm install

给npm项目添加依赖模块

  • npm install -g 全局安装模块
  • npm install -P or -S => npm install --save
  • npm install -D => npm install --save-dev
  • npm install <name>@<version> => npm install vue@2.5.16
  • npm install url => https://github.com/vuejs/vue/archive/v2.5.16.tar.gz or https://github.com/vuejs/vue/tarball/v2.5.16
  • npm install [<@scope>/]<name>@<tag> => 私有模块

npm install模块引入算法

如果安装A模块,A模块依赖B, B模块依赖C, 则目录为下

node_modules
|---- A 
|---- B
|---- C

如果安装A模块,A模块依赖B模块和C@1模块, B模块依赖C@2模块, 则目录为下

node_modules
|---- A 
|---- B
   | ---- C@2
|---- C@1

npm uninstall

取消安装模块

  • npm uninstall -g 取消全局安装
  • npm uninstall -S => npm uninstall --save
  • npm uninstall -D => npm uninstall --save-dev

npm version

项目模块版本号管理

  • npm version 查看项目的各个模块依赖的版本
  • npm version major 主版本升级, 如 1.0.1 => 2.0.0
  • npm version minor 次版本升级, 如 2.0.0 => 2.1.0
  • npm version patch 修正版本升级, 如 2.1.0 => 2.1.1
  • npm version premajor 预先主版本, 如 2.1.1 => 3.0.0-0
  • npm version preminor 预先次版本, 如 3.0.0-0 => 3.1.0-0
  • npm version preminor 预先修正版本, 如 3.1.0-0 => 3.1.1-0

npm version [major|minor] 都会进行一次git commit 提交, 同时会标记一个tag git tag -a v版本号

package.json 介绍

package.jsonnpm仓库的描述文件, 其中包括项目依赖, 脚本执行, 版本号,依赖环境等说明

name

项目名称

version

版本号

main

当前npm 库的入口文件

package.json 格式如下

{    
    "name": "npm-exmaple", 
    "main": "index.js"
}

引入npm-exmaple模块

require('npm-example'); // 实际上引入的文件为 npm-example/index.js
require('npm-exmaple/lib/utils'); // 引入 npm-example/lib/utils.js

scripts

npm的脚本, 能够编写shell命令, 同时自动将node_modules/.bin加入 $PATH中。使用npm run [task]执行

{
    "scripts": {
        "start": "NODE_ENV=production ./bin/www",
        "dev": "nodemon app.js",
        "test": "mocha"
    }
}

dependenciesdevDependencies

项目部署环境需要引用的模块, 一般存放在 dependencies, 如 express, axios等,
测试环境,开发环境,编译环境需要的模块,一般放在 devDependencies, 如果 webpack, mocha, babel-core

{
    "dependencies": {
        "express": "^4.16.0",
        "axios": "0.17.1"
    },
    "devDependencies": {
        "webpack": "3.10.0",
        "mocha": "^5.1.1",
        "babel-core": "6.26.0"
    }
}

bin

模块执行脚本, 如果当前模块暴露了一个命令, 如 node-bin, 那么将在安装该模块时,将会将node-bin执行文件传入给 $prefix/bin 或者 node_modules/.bin

{
    "name": "node-bin",
    "bin": "./cli.js"
}

or

{
    name: "node-example",
    "bin": {
        "node-bin": "./cli.js"
    }
}

.npmrc

.npmrc 读取顺序

  • /path/to/my/project/.npmrc 当前项目下
  • $HOME/.npmrc 当前用户下
  • $PREFIX/etc/npmrc 配置目录, 使用 npm config get prefix 获取$PREFIX
  • /path/to/npm/npmrcnpm同级别, 使用which npm获取 npm的路径

常用的 .npmrckey设置

# prefix

# http请求代理服务器
proxy = 

# https请求代理服务器
https-proxy = 

# no-proxy 不使用代理的域名
no-proxy[] = 'domain1'

# npm 远程仓库地址
registry = https://registry.npm.taobao.org

小结

目前完成了部分内容, 已经把常用的一些npm指令和配置介绍了一下,后续将会不间断补充新的内容。

相关资料


wayneli
1.4k 声望828 粉丝

2017-2018年目标